<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <!-- 
        全局产生GO


        预编译四部曲
        1创建AO对象(AO或GO就是运行期上下文,函数每次执行时都会产生一个独一无二的上下文,函数运行完毕后销毁)
        2找形参和变量声明,将变量和形参名作为AO属性名,值为undefined
        3将实参值和形参统一
        4在函数体里面找函数声明,值赋予函数体
    -->
    <script>
        function fn(a) {
            console.log(a);
            var a = 123;
            console.log(a);

            function a() {
                console.log("a函数");
            }
            //a(); //会报a不是函数错误
            console.log(a);
            var b = function() {}
            console.log(b);

            function d() {}
            console.log(b)
        }
        fn(1);
        typeof(null); //输出object
    </script>
</body>

</html>